package util;

import java.io.*;
import java.util.Properties;

import constants.CurrentConfigConstants;
import constants.DefaultConfigConstants;

public class ConfigurationManager {
	private Properties config = new Properties();// 记录配置项
	private String configFileName = CurrentConfigConstants.CONFIGURE_FILE_NAME;// 记录配置文件名

	// 读取配置
	public void loadConfig() {
		try {
			File file = new File(configFileName);
			
			if (file.exists()) { // 文件存在
				FileInputStream fin = new FileInputStream(configFileName);
				config.load(fin); // 载入文件
				fin.close();
			} else { // 文件不存在，新建文件，存入默认配置
				file.createNewFile();
				saveDefaultConfig();
			}
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
	
	// 重新读取配置
	public void reloadConfig() {
		// TODO
	}
	
	
	// 指定配置项名称，返回配置值
	public String getValue(String itemName) {
		return config.getProperty(itemName);
	}
	
	// 设置配置项名称及其值
	public void setValue(String itemName, String value) {
		config.setProperty(itemName, value);
		return;
	}
	
	// 读取默认配置
	public void loadDefaultConfig() {
		setValue("name", DefaultConfigConstants.CLIENT_DEFAULT_NAME);
		setValue("port", DefaultConfigConstants.CLIENT_DEFAULT_PORT);
	}
	
	// 存入默认配置
	public void saveDefaultConfig(){
		loadDefaultConfig();
		saveConfig("");
	}
	
	// 保存配置文件，指定抬头描述
	public void saveConfig(String description) {
		try {
			FileOutputStream fout = new FileOutputStream(configFileName);
			config.store(fout, description);// 保存文件
			fout.close();
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
	
	
	// 保存到 CurrentConfig
	public void loadToCurrent() {
		CurrentConfigConstants.CLIENT_CURRENT_NAME = getValue("name");
		CurrentConfigConstants.CLIENT_CURRENT_PORT = getValue("port");
		
	}
	
}